package ioc

import (
	"fmt"

	"github.com/gin-gonic/gin"
)

type IocApi interface {
	IocObject
	//业务handler 注册给路由
	Registry(r gin.IRouter)
}

// 单独管理api因为带有register方法
var ApiController = map[string]IocApi{}

// 实例初始化流程 ---先由系统注册--再调用Init 进行 初始化
// 初始化所有实例
func InitHttpApi(r gin.IRouter) error {
	for k, v := range ApiController {
		err := v.Init()
		if err != nil {
			return fmt.Errorf("init %s error:%s", k, err)
		}
		v.Registry(r)
	}
	return nil
}
func RegistryApiController(obj IocApi) {
	ApiController[obj.Name()] = obj
}
func ShowApi() (names []string) {
	for k := range ApiController {
		names = append(names, k)
	}
	return
}
